package com.study.spark.scala.chapter06

object Scala10_Object_Trait {
  def main(args: Array[String]): Unit = {
    // TODO 面向对象 - 特征
    // 将多个对象的相同特征，从对象中剥离出来，形成独立结构，称之为Trait(特征 )
    // 如果一个对象符合这个特征，那就把这个特征加入到这个对象中，这个过程叫混入
  }

  trait Runnable{
    def run():Unit
  }

  trait Eat{
    def eat():Unit
  }

  trait Study{
    def study():Unit
  }

    // 如果一个类只有一个特征时，采用extends关键字混入
    // 但是一个类如果有多个特征，第一个特征采用extends，后续采用with
  class Pserson extends Runnable with Eat with Study {
    override def run(): Unit ={
      println("run...")
    }

    override def eat(): Unit = {
      println("eat...")
    }

    override def study(): Unit = {
      println("study")
    }
  }

    // 如果存在父类的场合，并同时具备某个特征
    // 需要extends关键字继承父类，with关键字混入特征
  class Dog extends Object with Runnable {
    override def run(): Unit = {
      println("run....")
    }

  }

}


